package com.yohann.boot.common.annotation;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 分布式锁注解
 *
 * @author Yeung Wah
 * @since 2022/4/26
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Lock {

    /**
     * 前缀
     */
    String prefix() default "";

    /**
     * SpEl表达式 key
     */
    String key() default "";

    /**
     * 等锁时间
     */
    long waitTime() default -1;

    /**
     * 释放时间
     */
    long leaseTime() default -1;

    /**
     * 时间单位
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

}